// eslint.config.js
import js from '@eslint/js'
import vuePlugin from 'eslint-plugin-vue'
// import tsPlugin from "@typescript-eslint/eslint-plugin";
// import tsParser from "@typescript-eslint/parser";
// import vueParser from "vue-eslint-parser";
// import prettier from "eslint-config-prettier";

export default [
  // ==================== 基础配置 ====================
  // js.configs.recommended,

  // // ==================== Vue 文件配置 ====================
  // {
  //   files: ["**/*.vue"],
  //   languageOptions: {
  //     parser: vueParser,
  //     globals: {
  //       process: true,       // 允许使用 process 全局变量
  //       __dirname: true,    // 允许使用 __dirname 全局变量
  //     },
  //   },
  //   plugins: {
  //     vue: vuePlugin,
  //   },
  //   rules: {
  //     ...vuePlugin.configs.essential.rules,
  //     // vue组件命名规则方式
  //     "vue/component-name-in-template-casing": "off",
  //     // 模組的命名需要由多個單字組合而成
  //     "vue/multi-word-component-names": "off",
  //     // 不使用根标签报错提示
  //     "vue/no-multiple-template-root": "off",
  //   },
  // },

  // // ==================== TypeScript 配置 ====================
  // {
  //   files: ["**/*.ts", "**/*.vue"],
  //   languageOptions: {
  //     parser: tsParser,
  //     parserOptions: {
  //       ecmaVersion: "latest",  // 使用最新的 ECMAScript 特性
  //       sourceType: "module",  // 使用 ES 模块语法
  //       ecmaFeatures: {
  //         jsx: true,          // 允许 JSX 语法
  //       },
  //     },
  //   },
  //   plugins: {
  //     "@typescript-eslint": tsPlugin,
  //   },
  //   rules: {
  //     ...tsPlugin.configs.recommended.rules,
  //     // 允许使用 any 类型
  //     "@typescript-eslint/no-explicit-any": "off",
  //   },
  // },

  // ==================== 全局规则配置 ====================
  {
    languageOptions: {
      globals: {
        browser: true, // 浏览器环境全局变量
        commonjs: true, // CommonJS 环境全局变量
        es6: true, // ES6 环境全局变量
      },
    },
    rules: {
      // 指定数组的元素之间要以空格隔开
      'array-bracket-spacing': ['error', 'never'],
      // 控制逗号前后的空格
      'comma-spacing': ['error', { before: false, after: true }],
      // 强制使用一致的缩进
      indent: [
        'error',
        4,
        {
          SwitchCase: 1, // switch case 缩进规则
        },
      ],
      // 强制在对象字面量的属性中键和值之间使用一致的间距
      'key-spacing': [
        'error',
        {
          beforeColon: false, // 冒号前无空格
          afterColon: true, // 冒号后有空格
        },
      ],
      // 要求操作符周围有空格
      'space-infix-ops': 'error',
      // 不允许空格和 tab 混合缩进
      'no-mixed-spaces-and-tabs': 'error',
      // 禁止使用多个空格
      'no-multi-spaces': 'error',
      // 禁用行尾空格
      'no-trailing-spaces': 'error',
      // 是否允许debugger
      'no-debugger': 'warn',
      'no-var': 'error', // 禁止使用 var
      // 禁止出现未使用过的变量
      'no-unused-vars': [
        'warn',
        {
          vars: 'all', // 检查所有变量
          args: 'none', // 不检查函数参数
        },
      ],
      // 强制在花括号中使用一致的空格
      'object-curly-spacing': [
        'error',
        'always',
        {
          objectsInObjects: false, // 对象字面量括号内不强制空格
        },
      ],
      // 强制语句分号结尾
      semi: ['error', 'always'],
    },
  },

  // ==================== Prettier 兼容配置 ====================
  // 注意：必须放在最后以覆盖冲突规则
  // prettier,
]
